package model

import (
	"fmt"
	"path"
	"reflect"

	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
)

var db *gorm.DB

// 初始化数据库
func SetupDb(file string) error {
	var err error
	db, err = gorm.Open(sqlite.Open(path.Join("data", file)), &gorm.Config{})
	if err != nil {
		return err
	}
	return nil
}

// 初始化表
func InitTables(file string) {
	// 初始化数据库
	if err := SetupDb(file); err != nil {
		fmt.Println(err.Error())
		return
	}

	tables := []interface{}{&User{}, &Link{}}
	// 删除表
	for _, table := range tables {
		name := reflect.TypeOf(table)
		fmt.Printf("   - 删除表：%s\n", name)
	}
	db.Migrator().DropTable(tables...)

	// 创建新表
	for _, table := range tables {
		name := reflect.TypeOf(table)
		fmt.Printf("   - 创建表：%s\n", name)
	}
	db.Migrator().CreateTable(tables...)
}
